package com.ic.util;

import org.apache.shiro.codec.Base64;
import org.apache.shiro.crypto.hash.Md5Hash;

/**
 * 本类提供基于Base64加密/解密功能和MD5加密功能
 *
 * @author zen_hu
 */

public class CryptographyUtil {

	/**
	 * Base64加密方法
	 *
	 * @param str 字符串
	 * @return 加密后的字符串
	 */
	public static String encBase64(String str) {
		return Base64.encodeToString(str.getBytes());
	}

	/**
	 * Base64解密方法
	 *
	 * @param str 字符串
	 * @return 解密后的字符串
	 */
	public static String decBase64(String str) {
		return Base64.decodeToString(str);
	}

	/**
	 * Md5加密方法
	 *
	 * @param str 加密字符串
	 * @return 被加密后的字符串
	 */
	public static String md5(String str) {
		return md5(str, null);
	}

	/**
	 * 使用一个任意的字符串作为参数，提升破解难度的Md5加密方法
	 *
	 * @param str  字符串
	 * @param salt 混字符串，单纯使用MD5加密还是有破解的可能性，因此要使用一个任意的字符串作为参数，提升破解难度
	 * @return 被加密后的字符串
	 */
	public static String md5(String str, String salt) {
		return new Md5Hash(str, salt).toString();
	}

	public static void main(String[] args) {
		System.out.println(md5("111"));
	}
}
